// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
package org.trafodion.ci;

public class MaskingThread extends Thread
{
   private boolean stop = false;
   private String prompt = null;

   /**
   * @param thePrompt The prompt displayed to the user
   */
   public MaskingThread(String thePrompt)
   {
      prompt = thePrompt;
   }

   /**
   * Begin masking until asked to stop.
   */
   public void run()
   {
      int priority = Thread.currentThread().getPriority();
      Thread.currentThread().setPriority(Thread.MAX_PRIORITY);

      while (!stop)
      {
         if (!stop)
            System.out.print( "                                 \r" + prompt  );
         //System.out.flush();
         try
         {
            // attempt masking at this rate (refresh every 1 ms.)
            sleep(1);
         }
         catch (InterruptedException iex)
         {
            iex.printStackTrace();
         }
         finally
         { // restore the original priority
            Thread.currentThread().setPriority(priority);
         }

      }
   }

   /**
   * Instruct the thread to stop masking.
   */
   public void stopMasking()
   {
      stop = true;
   }
}
